import { AttrTypeEnum, EntityTypeEnum, SelectPoolTypeEnum } from "./Enum"

/** 武器配置信息 */
export interface IWeaponConfig {
    sn: string,
    /** 武器伤害 */
    damage: number,
    /** 武器子弹贯穿次数 */
    penetrate: number,
    /** 武器射击速度 */
    shootCD: number,
    /** 武器瞄准半径 */
    aimRadiu: number,
    /** 武器射击半径 */
    shootRadiu: number,
    /** 武器类型 */
    entityType: EntityTypeEnum,
    /** 武器星级 */
    star: number,
    /** 爆率 */
    critChance: number,
    /** 爆伤 */
    critRate: number,
    /** 特殊值 */
    special?: number
}

/** 怪物配置信息 */
export interface IEnemyConfig {
    sn: string,
    entityType: EntityTypeEnum,
    name: string,
    hp: number,
    speed: number,
    /** 移动类型 1目标角色 2保持距离 3随即移动 */
    moveType: 1 | 2 | 3,
    /** 怪物类型 1普通 2精英 3boss */
    enemyType: 1 | 2 | 3,
}
/** 角色配置信息 */
export interface IActorConfig {
    sn: string,
    entityType: EntityTypeEnum,
    name: string,
    hp: number,
    speed: number,
}

/** 道具配置信息 */
export interface IPropConfig {
    sn: string,
    /** 增加的属性类型 */
    attrType: AttrTypeEnum,
    /** 增加的值 */
    attrValue: number,
    /** 道具类型 */
    entityType: EntityTypeEnum,
    /** 道具星级 */
    star: number,
}

/** 属性配置信息 */
export interface IAttrConfig {
    sn: string,
    /** 名字 */
    name: string,
    /** 类型 */
    type: number,
}

/** 技能配置信息 */
export interface ISkillConfig {
    sn: string,
    /** 实体类型 */
    entityType: any,
    /** 描述 */
    skillDesc: any,
    /** 拥有指定武器时解锁 */
    unlockWeapon?: any,
    /** 拥有指定满级道具时解锁 */
    unlockProp?: any,
}

/** 实体 */
export interface IEntityConfig {
    sn: string,
    entityType: number,
    /** 名字 */
    name: string,
    /** 实体的枚举类型，对应资源文件夹名字 */
    key?: string,
    /** 0其他 1角色 2怪物 3boss 4武器 5道具 */
    type: number,
}

/** 选择池配置信息 */
export interface ISelectPoolConfig {
    sn: string,
    /** 类型 1武器 2道具 3技能 */
    selectType: SelectPoolTypeEnum,
    /** 物品类型 */
    entityType: EntityTypeEnum,
    /** 0锁着的，1解锁的 */
    isUnlock: 0 | 1,
}

/** 怪物批次配置信息 */
export interface ILevelPartConfig {
    sn: string,
    /** 怪物id */
    enemyId: number,
    /** 出怪间隔 */
    cd: number,
    /** 首次出现延迟 */
    firstTime: number,
    /** 出怪模式 1随机位置 2位置扎堆 */
    type: 1 | 2,
    /** 怪物数量 */
    number: number
}

export interface ITalentConfig {
    sn: string,
    /** 等级上限 */
    maxLvl: number,
    /** 每级属性 */
    valueLvl: number,
    /** 属性类型 */
    attrType: number,
    /** 上级科技 */
    preSn: number[],
    /** 名字 */
    name: string,
    /** 描述 */
    desc: string,
    /** 升级消耗 */
    cost: number,

}